#include <rtthread.h>
#include "base.h"

/*---------------------------------------
 * 静态任务资源定义
 *--------------------------------------*/

// LED任务资源
static struct rt_thread led_thread;
static rt_uint8_t led_stack[4096];

// 按键任务资源
static struct rt_thread key_thread;
static rt_uint8_t key_stack[4096];

/*---------------------------------------
 * 任务1：LED心跳
 *--------------------------------------*/
void led_task_entry(void *param) {
    RT_UNUSED(param);

    while (1) {
        led_toggle(LED0);
        rt_thread_mdelay(2000);
    }
}
 
/*---------------------------------------
 * 任务2：按键检测
 *--------------------------------------*/
void key_task_entry(void *param) {    
     RT_UNUSED(param);

     while (1) {
        if (key_pressed()) {
            led_set(LED1, 1);
        } else {
            led_set(LED1, 0);
        }
    }
}

/*---------------------------------------
 * 应用入口（main函数）
 *--------------------------------------*/
int main(void) {
    hardware_init();

    // 静态初始化 LED 心跳任务
    rt_thread_init(
        &led_thread,
        "led_heartbeat",
        led_task_entry,
        RT_NULL,
        led_stack,
        sizeof(led_stack),
        10,     // 优先级
        5       // 时间片
    );
    rt_thread_startup(&led_thread);

    // 静态初始化 按键监控任务
    rt_thread_init(
        &key_thread,
        "key_monitor",
        key_task_entry,
        RT_NULL,
        key_stack,
        sizeof(key_stack),
        10,     // 优先级
        5       // 时间片
    );
    rt_thread_startup(&key_thread);

    return 0;
}